# 从dataclasses模块导入dataclass装饰器
from dataclasses import dataclass


# 测试环境配置类
# 使用@dataclass装饰器简化数据类定义
@dataclass
class TestEnvironment:
    # 管理员端API地址
    ADM_HOST = "https://api.admin.merchant.java.crmeb.net"
    # 管理员账号
    ADM_USERNAME = "18292417675"
    # 管理员密码
    ADM_PASSWORD = "000000"
    # 管理员端数据库连接信息（暂未设置）
    ADM_Mysql = ""
    # 前端API地址
    FONT_HOST = "https://api.front.merchant.java.crmeb.net"
    # 前端账号
    FONT_USERNAME = "17362124646"
    # 前端密码
    FONT_PASSWORD = "a123456"
    # 前端数据库连接信息（暂未设置）
    FONT_Mysql = ""


# 开发环境配置类
@dataclass
class DevEnvironment:
    ADM_HOST = "https://api.admin.merchant.java.crmeb.net"
    ADM_USERNAME = "admin"
    ADM_PASSWORD = "123456"
    ADM_Mysql = ""

    FONT_HOST = "https://api.admin.merchant.java.crmeb.net"
    FONT_USERNAME = "admin"
    FONT_PASSWORD = "123456"
    FONT_Mysql = ""


# 预发布环境配置类
@dataclass
class preReleaseEnvironment:
    ADM_HOST = "https://api.admin.merchant.java.crmeb.net"
    ADM_USERNAME = "admin"
    ADM_PASSWORD = "123456"
    ADM_Mysql = ""

    FONT_HOST = "https://api.admin.merchant.java.crmeb.net"
    FONT_USERNAME = "admin"
    FONT_PASSWORD = "123456"
    FONT_Mysql = ""


# 环境映射字典：将环境名称与对应的配置类关联
ENV_MAP = {
    "测试环境": TestEnvironment,
    "开发环境": DevEnvironment,
    "生产环境": preReleaseEnvironment,
}

# 当前使用的环境名称
ENV_NAME = "测试环境"

# 根据环境名称获取对应的配置类，便于后续调用
# 例如：通过ENV.ADM_HOST即可获取当前环境的管理员端API地址，ENV_MAP[ENV_NAME]因为这个ENV_MAP是集合，可以通过key去找到值，所以ENV.能找到DevEnvironment的对象
ENV = ENV_MAP[ENV_NAME]